package Demo03;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 28463
 * Date: 2022—05—14
 * Time: 17:07
 */
class  OuterClass{

    public int date1 = 1;
    private int date2 = 2;
    public static int data3 = 3;

    //实例内部类
    //1.实例内部类中，不能定义静态的成员变量为什么？
    //如果定义，那么这个静态的成员应该是被final修饰的
    //2.实例内部类中，不能定义静态的成员方法为什么？
       //真的不能定义
    //3.如何实例化，实例内部类?
    //外部类类名.内部类 变量 = 外部类引用.new 内部类();
    //   OuterClass.InnerClass innerClass = out.new InnerClass();

    //4.如何访问实例内部类和外部类同名的成员变量 OuterClass.this.date1
    // 实例内部类当中 包含外部类的this

    //5.如果是同名的静态的成员变量   OuterClass.data3
    class InnerClass{
        public int data1 = 4;
        private int data5 = 5;
        public static final int data3 = 6;

        public InnerClass(){
            System.out.println("实例内部类的构造方法！");
        }
        public void innerFunc(){
            System.out.println("实例内部类的普通方法！");
            System.out.println(date1);
            System.out.println("外部类的："+OuterClass.this.date1);
            System.out.println(date2);
            System.out.println(data3);
            System.out.println("外部类的："+OuterClass.data3);
        }
    }
}
public class Test01 {
    public static void main(String[] args) {
/*        OuterClass out = new OuterClass();
        OuterClass.InnerClass innerClass = out.new InnerClass();
        innerClass.innerFunc()*/;

    OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
    }
}
